# Distributed Tracing & Open Telemtry

## 📘 Resources
- [Awesome OpenTelemetry](https://github.com/magsther/awesome-opentelemetry) - A curated list of OpenTelemetry resources
- [open-telemetry/semantic-conventions](https://github.com/open-telemetry/semantic-conventions) - Defines standards for generating consistent, accessible telemetry across a variety of domains

## 📕 Articles
- [What is OpenTelemetry? - opentelemetry.io](https://opentelemetry.io/docs/concepts/what-is-opentelemetry/)
- [OpenTelemetry Specification Overview - opentelemetry.io](https://opentelemetry.io/docs/reference/specification/overview/)
- [OpenTelemetry Specification - opentelemetry.io](https://opentelemetry.io/docs/reference/specification/)
- [Trace Semantic Conventions - opentelemetry.io](https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/)
- [Baggage in OpenTelemetry - opentelemetry.io](https://opentelemetry.io/docs/concepts/signals/baggage/)
- [Tracing in OpenTelemetry - opentelemetry.io](https://opentelemetry.io/docs/concepts/signals/traces/)
- [Metrics in OpenTelemetry - opentelemetry.io](https://opentelemetry.io/docs/concepts/signals/metrics/)
- [Getting Started - opentelemetry.io](https://opentelemetry.io/docs/instrumentation/net/getting-started/)
- [Using instrumentation libraries - opentelemetry.io](https://opentelemetry.io/docs/instrumentation/net/libraries/)
- [Manual Instrumentation - opentelemetry.io](https://opentelemetry.io/docs/instrumentation/net/manual/)
- [Exporters - opentelemetry.io](https://opentelemetry.io/docs/instrumentation/net/exporters/)
- [Collect a distributed trace](https://docs.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing-collection-walkthroughs)
- [NET distributed tracing concepts](https://docs.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing-concepts)
- [Adding distributed tracing instrumentation](https://docs.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing-instrumentation-walkthroughs)
- [OpenTelemetry .NET API](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/src/OpenTelemetry.Api/README.md)
- [Getting Started with OpenTelemetry .NET in 5 Minutes](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/docs/trace/getting-started)
- [OpenTelemetry .NET SDK](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/src/OpenTelemetry)
- [Extending the OpenTelemetry .NET SDK](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/docs/trace/extending-the-sdk/README.md)
- [Customizing OpenTelemetry .NET SDK](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/docs/trace/customizing-the-sdk/README.md)
- [EventSource User’s Guide](https://github.com/microsoft/dotnet-samples/blob/master/Microsoft.Diagnostics.Tracing/EventSource/docs/EventSource.md)
- [DiagnosticSource User's Guide](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md)
- [Activity User Guide](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/ActivityUserGuide.md)
- [Improve Activity API usability and OpenTelemetry integration](https://github.com/dotnet/designs/blob/main/accepted/2020/diagnostics/activity-improvements.md)
- [Improve Activity API usability and OpenTelemetry integration (Part 2)](https://github.com/dotnet/designs/blob/main/accepted/2020/diagnostics/activity-improvements-2.md)
- [The TraceEvent Library Programmers Guide](https://github.com/microsoft/dotnet-samples/blob/master/Microsoft.Diagnostics.Tracing/TraceEvent/docs/TraceEvent.md)
- [Messaging Attributes Conventions](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/messaging.md#messaging-attributes))
- [Semantic conventions for HTTP spans](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md)
- [Semantic conventions for RPC spans](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/rpc.md)
- [The Big Pieces: OpenTelemetry specification](https://lightstep.com/blog/opentelemetry-specification)
- [The Big Pieces: OpenTelemetry context propagation](https://lightstep.com/blog/opentelemetry-context-propagation)
- [The Big Pieces: OpenTelemetry client design and architecture](https://lightstep.com/blog/opentelemetry-client-design-and-architecture)
- [The Big Pieces: OpenTelemetry Collector design and architecture](https://lightstep.com/blog/opentelemetry-collector-design-and-architecture)
- [Using W3C Trace Context standard in distributed tracing](https://dev.to/luizhlelis/using-w3c-trace-context-standard-in-distributed-tracing-3743)
- [Building End-to-End Diagnostics and Tracing: An Intro](https://jimmybogard.com/building-end-to-end-diagnostics-and-tracing-a-primer/)
- [Distributed Tracing in ASP.NET Core with Jaeger and Tye Part 1 - Distributed Tracing](https://thecloudblog.net/post/distributed-tracing-in-asp.net-core-with-jaeger-and-tye-part-1-distributed-tracing/)
- [Distributed Tracing in ASP.NET Core with Jaeger and Tye Part 2 - Project Tye](https://thecloudblog.net/post/distributed-tracing-in-asp.net-core-with-jaeger-and-tye-part-2-project-tye/)
- [Getting Started with OpenTelemetry .NET C#](https://opentelemetry.lightstep.com/csharp/)
- [OpenTelemetry .NET reaches v1.0](https://devblogs.microsoft.com/dotnet/opentelemetry-net-reaches-v1-0/)
- [Deep Dive into Open Telemetry for .NET](https://rehansaeed.com/deep-dive-into-open-telemetry-for-net/)
- [Open Telemetry for ASP.NET Core](https://rehansaeed.com/open-telemetry-for-asp-net-core/)
- [Exporting Open Telemetry Data to Jaeger](https://rehansaeed.com/exporting-open-telemetry-data-to-jaeger/)
- [OpenTracing and C#](https://www.olivercoding.com/2018-12-14-jaeger-csharp/)
- [OpenTracing and C#: part 2](https://www.olivercoding.com/2018-12-30-jaeger-csharp-2/)
- [Getting started with OpenTelemetry and distributed tracing in .NET Core](https://www.mytechramblings.com/posts/getting-started-with-opentelemetry-and-dotnet-core/)
- [Distributed Tracing with OpenTracing API of .NET Core Applications on Kubernetes](https://www.gokhan-gokalp.com/en/distributed-tracing-with-opentracing-api-of-net-core-applications-on-kubernetes/)
- [How Distributed Tracing Solves One of the Worst Microservices Problems](https://petabridge.com/blog/why-use-distributed-tracing/)
- [Why You Should be Paying Attention to OpenTracing](https://petabridge.com/blog/why-use-opentracing/)
- [The Current State of OpenTelemetry in .NET](https://petabridge.com/blog/state-opentelemetry-dotnet/)
- [Improvements in .NET Core 3.0 for troubleshooting and monitoring distributed apps](https://devblogs.microsoft.com/aspnet/improvements-in-net-core-3-0-for-troubleshooting-and-monitoring-distributed-apps/)
- [ASP.NET Core Apps Observability](https://devblogs.microsoft.com/aspnet/observability-asp-net-core-apps/#adding-tracing-to-a-net-core-application)
- [A Step by Step Guide to Logging in ASP.NET Core 5](https://www.ezzylearning.net/tutorial/a-step-by-step-guide-to-logging-in-asp-net-core-5)
- [Diagnostics in .Net Core 3: Listening to outbound HTTP requests](https://im5tu.io/article/2020/06/diagnostics-in-.net-core-3-listening-to-outbound-http-requests/)
- [Trace Context](https://www.w3.org/TR/trace-context)
- [Propagation format for distributed trace context: Baggage](https://w3c.github.io/baggage/)
- [Using Jaeger and OpenTelemetry SDKs in a mixed environment with W3C Trace-Context](https://medium.com/jaegertracing/jaeger-clients-and-w3c-trace-context-c2ce1b9dc390)
- [Distributed Tracing In .NET](https://dashdevs.com/blog/quick-and-efficient-distributed-tracing-in.net/)
- [Diagnostics Improvements in .NET Core 3.0](https://www.youtube.com/watch?v=fkjetdIdcyg)
- [Distributed Tracing with gRPC and OpenTelemetry](https://blog.ladeak.net/posts/grpc-distributed-tracing)
- [Introducing diagnostics improvements in .NET Core 3.0](https://devblogs.microsoft.com/dotnet/introducing-diagnostics-improvements-in-net-core-3-0/)
- [Using the DiagnosticSource in .NET Core: Theory](https://sudonull.com/post/3671-Using-the-DiagnosticSource-in-NET-Core-Theory)
- [Add SkyWalking + SkyApm-dotnet distributed link tracking system to the microservice framework Demo.MicroServer](https://www.programmersought.com/article/76773716203/)
- [Asp.Net Core uses Skywalking to implement distributed link tracking](https://www.programmersought.com/article/64607508135/)
- [ASP.NET Core Apps Observability](https://devblogs.microsoft.com/aspnet/observability-asp-net-core-apps/)
- [OpenTelemetry in .NET](https://lightstep.com/blog/opentelemetry-net-all-you-need-to-know/)
- [Increasing Trace Cardinality with Activity Tags and Baggage](https://jimmybogard.com/increasing-trace-cardinality-with-tags-and-baggage/)
- [Monitoring a .NET application using OpenTelemetry](https://www.meziantou.net/monitoring-a-dotnet-application-using-opentelemetry.htm)
- [What is the difference between Logging, Tracing & Profiling?](https://greeeg.com/issues/differences-between-logging-tracing-profiling)
- [Fullstack app (workshop) with distributed tracing, logging and monitoring](https://dev.to/damikun/fullstack-app-workshop-with-distributed-tracing-and-monitoring-3i45)
- [OpenTelemetry in .NET](https://rafaelldi.blog/posts/open-telemetry-in-dotnet/)
- [Distributed tracing for messaging application](https://rafaelldi.blog/posts/distributed-tracing-for-messaging-application/)
- [Distributed application with Project Tye](https://rafaelldi.blog/posts/distributed-application-with-project-tye/)
- [Tracing for messaging application](https://rafaelldi.blog/posts/tracing-for-messaging-application/)
- [Optimally Configuring Open Telemetry Tracing for ASP.NET Core](https://rehansaeed.com/optimally-configuring-open-telemetry-tracing-for-asp-net-core/)
- [OpenTelemetry in Action: Optimizing Database Operations](https://thecloudblog.net/post/opentelemetry-in-action-optimizing-database-operations/)
- [OpenTelemetry in Action: Identifying Database Dependencies](https://thecloudblog.net/post/opentelemetry-in-action-identifying-database-dependencies/)
- [Just-in-Time Nomad: Running the OpenTelemetry Collector on Hashicorp Nomad with HashiQube](https://storiesfromtheherd.com/just-in-time-nomad-running-the-opentelemetry-collector-on-hashicorp-nomad-with-hashiqube-4eaf009b8382)
- [How to setup OpenTelemetry instrumentation in ASP.NET core](https://dev.to/jmourtada/how-to-setup-opentelemetry-instrumentation-in-aspnet-core-23p5)
- [What is OpenTelemetry?](https://lightstep.com/opentelemetry/about)
- [Getting started with OpenTelemetry Metrics in .NET. Part 1: Key concepts](https://www.mytechramblings.com/posts/getting-started-with-opentelemetry-metrics-and-dotnet-part-1/) ⭐
- [Getting started with OpenTelemetry Metrics in .NET. Part 2: Instrumenting the BookStore API](https://www.mytechramblings.com/posts/getting-started-with-opentelemetry-metrics-and-dotnet-part-2/) ⭐
- [OpenTelemetry Distributed Tracing](https://uptrace.dev/opentelemetry/distributed-tracing.html)
- [OpenTelemetry Tracing API for .NET](https://uptrace.dev/opentelemetry/dotnet-tracing.html)
- [Set up OpenTelemetry with Event Sourcing and Marten](https://event-driven.io/en/set_up_opentelemetry_wtih_event_sourcing_and_marten/)
- [Automatic Instrumentation of Containerized .NET Applications With OpenTelemetry](https://www.twilio.com/blog/automatic-instrumentation-of-containerized-dotnet-applications-with-opentelemetry) ⭐
- [Instrumenting .NET Apps with OpenTelemetry](https://www.thorsten-hans.com/instrumenting-dotnet-apps-with-opentelemetry/)
- [Observability with Grafana Cloud and OpenTelemetry in .net microservices](https://dev.to/dbolotov/observability-with-grafana-cloud-and-opentelemetry-in-net-microservices-448c) ⭐
- [Observing .NET microservices with OpenTelemetry - logs, traces and metrics](https://blog.codingmilitia.com/2023/09/05/observing-dotnet-microservices-with-opentelemetry-logs-traces-metrics/) ⭐
- [Supporting Jaeger with native OTLP](https://deploy-preview-1892--opentelemetry.netlify.app/blog/2022/jaeger-native-otlp/)
- [OTLP Specification 1.0.0](https://opentelemetry.io/docs/specs/otlp/)
- [Introducing native support for OpenTelemetry in Jaeger](https://medium.com/jaegertracing/introducing-native-support-for-opentelemetry-in-jaeger-eb661be8183c)
- [.NET Aspire dashboard is the best tool to visualize your OpenTelemetry data during local development](https://anthonysimmon.com/dotnet-aspire-dashboard-best-tool-visualize-opentelemetry-local-dev/)
- [Trace Propagation and Public API Endpoints in .NET – Part 1 (Disable All)](https://martinjt.me/2023/07/07/trace-propagation-and-public-api-endpoints-in-net-part-1-disable-all/)
- [Where are my traces? (weird .NET meets OpenTelemetry gotcha)](https://blog.codingmilitia.com/2024/05/13/where-are-my-traces-weird-dotnet-meets-opentelemetry-gotcha/)

## 📺 Videos
- [Jimmy Bogard - Distributed Tracing Made Easy with .NET Core and OpenTelemetry](https://www.youtube.com/watch?v=s9UNr1oEMl4)
- [On .NET Live - Cloud Native Patterns for .NET Developers](https://www.youtube.com/watch?v=PDdHa0ushJ0)
- [Distributed Tracing Made Easy with .NET Core - Jimmy Bogard](https://www.youtube.com/watch?v=kfyCHtqk-Ts)
- [Distributed Tracing Made Easy with .NET 5, with Jimmy Bogard](https://www.youtube.com/watch?v=N0r5NSY3ZIQ)
- [Distributed Tracing with .NET 5](https://www.youtube.com/watch?v=cgfIX9Y7AsQ)
- [ASP.NET Core Series: Tracing](https://www.youtube.com/watch?v=G_C1RGOYZk8)
- [Distributed Tracing with Jaeger [Microservices .NET]](https://www.youtube.com/watch?v=toXFRBtv4fg)
- [Application Diagnostics in .NET Core 3.1 - Damian Edwards & David Fowler](https://www.youtube.com/watch?v=p6CjlnwPhHQ)
- [DiagnosticSource and Activity, Tracing in .NET Part 1 - .NET Concept of the Week - Episode 18](https://www.youtube.com/watch?v=y52l8XR3XK4)
- [Tracing with Jaeger and Kubernetes](https://www.youtube.com/watch?v=FikF0DtxZno)
- [Exploring distributed tracing with ASP NET Core 6](https://www.youtube.com/watch?v=l1_i8p2hVlE)
- [OpenTelemetry with Minimal APIs in .NET 6](https://www.youtube.com/watch?v=djLCqEzf72o)
- [OpenTelemetry will save your day and night - Alexey Zimarev - NDC Oslo 2021](https://www.youtube.com/watch?v=pz4bNmlss3w)
- [OpenMetrics, OpenTracing, OpenTelemetry - are we there yet? - Alexey Zimarev - NDC Oslo 2020](https://www.youtube.com/watch?v=0vl-4OhPyQY)
- [MassTransit v8 - Open Telemetry](https://www.youtube.com/watch?v=WsTYClGrOVI)
- [.NET Diagnostics for Applications: Best Practices](https://www.pluralsight.com/courses/dot-net-diagnostics-applications-best-practices)
- [Distributed Tracing in .NET 6 using OpenTelemetry - Martin Thwaites - NDC Copenhagen 2022](https://www.youtube.com/watch?v=3JnMfJM9K0c)
- [Cloud-native development with .NET 8 | Microsoft Build 2023](https://www.youtube.com/watch?v=hz9d3AcZKqQ)
- [Practical OpenTelemetry for .NET - Martin Thwaites - NDC Oslo 2023](https://www.youtube.com/watch?v=c4AJlZeX2fE)
- [Getting started with the OpenTelemetry Collector](https://www.youtube.com/watch?v=EeU-k659lpw)

## 📦 Libraries
- [SkyAPM/SkyAPM-dotnet](https://github.com/SkyAPM/SkyAPM-dotnet) - The .NET/.NET Core instrument agent for Apache SkyWalking
- [opentracing-contrib/csharp-netcore](https://github.com/opentracing-contrib/csharp-netcore) - OpenTracing instrumentation for .NET Core & .NET 5 apps
- [jaegertracing/jaeger-client-csharp](https://github.com/jaegertracing/jaeger-client-csharp) - C# client (tracer) for Jaeger
- [open-telemetry/opentelemetry-dotnet](https://github.com/open-telemetry/opentelemetry-dotnet) - The OpenTelemetry .NET Client
- [SkyAPM/SkyAPM-dotnet](https://github.com/SkyAPM/SkyAPM-dotnet) - The .NET/.NET Core instrument agent for Apache SkyWalking
- [jbogard/MongoDB.Driver.Core.Extensions.DiagnosticSources](https://github.com/jbogard/MongoDB.Driver.Core.Extensions.DiagnosticSources) - extends the core MongoDB C# driver to expose telemetry information via System.Diagnostics.
- [jbogard/NServiceBus.Extensions.Diagnostics.OpenTelemetry](https://github.com/jbogard/NServiceBus.Extensions.Diagnostics.OpenTelemetry)
- [jbogard/MongoDB.Driver.Core.Extensions.DiagnosticSources](https://github.com/jbogard/MongoDB.Driver.Core.Extensions.DiagnosticSources)
- [open-telemetry/opentelemetry-dotnet-contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib) - This repository contains set of components extending functionality of the OpenTelemetry .NET SDK. Instrumentation libraries, exporters, and other components can find their home here.
- [open-telemetry/opentelemetry-dotnet/OpenTelemetry.Exporter.InMemory](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/src/OpenTelemetry.Exporter.InMemory) - The in-memory exporter stores data in a user provided memory buffer.
- [alexvaluyskiy/prometheus-net-contrib](https://github.com/alexvaluyskiy/prometheus-net-contrib) - Exposes .NET core diagnostic listeners and counters
- [open-telemetry/opentelemetry-collector-contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) - Contrib repository for the OpenTelemetry Collector
- [open-telemetry/opentelemetry-collector/](https://github.com/open-telemetry/opentelemetry-collector/) - OpenTelemetry Collector
- [grafana/grafana-opentelemetry-dotnet](https://github.com/grafana/grafana-opentelemetry-dotnet) - Grafana's distribution of OpenTelemetry instrumentation for .NET

## 🚀 Samples
- [karlospn/opentelemetry-tracing-demo](https://github.com/karlospn/opentelemetry-tracing-demo) - Example about how to use OpenTelemetry for tracing when we have a series of distributed applications communicating between them
- [jbogard/nsb-diagnostics-poc](https://github.com/jbogard/nsb-diagnostics-poc)
- [open-telemetry/opentelemetry-dotnet/examples](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/examples)
- [damikun/trouble-training](https://github.com/damikun/trouble-training) - FullStack app workshop with distributed tracing and monitoring. This shows the configuration from React frontend to .NetCore backend.
- [andreatosato/Photobook](https://github.com/andreatosato/Photobook)
- [rafaelldi/open-telemetry-in-dotnet](https://github.com/rafaelldi/open-telemetry-in-dotnet) - Sample project for the article about OpenTelemetry in .NET
- [rafaelldi/distributed-tracing-for-messaging](https://github.com/rafaelldi/distributed-tracing-for-messaging) - Sample project for the article about distributed tracing in messaging application
- [thangchung/practical-opentelemetry](https://github.com/thangchung/practical-opentelemetry) - Make OpenTelemetry works on .NET Core with features such as tracing, logs and metrics on multiple protocols like HTTP/gRPC/UDP/TCP...
- [jbogard/presentations/DistributedTracing](https://github.com/jbogard/presentations/tree/master/DistributedTracing)
- [james-world/oxford-otel-demo](https://github.com/james-world/oxford-otel-demo)
- [hashicorp/nomad-open-telemetry-getting-started](https://github.com/hashicorp/nomad-open-telemetry-getting-started) - OpenTelemetry getting started guides on Nomad
- [open-telemetry/opentelemetry-collector-contrib/nomad](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/nomad)
- [open-telemetry/opentelemetry-collector-contrib/examples/demo](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/demo)
- [joaofbantunes/ExploringDistributedTracingWithAspNet](https://github.com/joaofbantunes/ExploringDistributedTracingWithAspNet)
- [davidfowl/TodoApi](https://github.com/davidfowl/TodoApi/blob/afdc367fadcfd979bb85dd73e5f48cf896ca0f1a/TodoApi/OpenTelemetryExtensions.cs#L11)
- [oskardudycz/EventSourcing.NetCore](https://github.com/oskardudycz/EventSourcing.NetCore/pull/181)
- [Eventuous/eventuous](https://github.com/Eventuous/eventuous)
- [kimcuhoang/practical-net-otelcollector](https://github.com/kimcuhoang/practical-net-otelcollector) ⭐ - Practical .NET Observability with OpenTelemetry Collector
- [cecilphillip/grafana-otel-dotnet](https://github.com/cecilphillip/grafana-otel-dotnet) ⭐ - Sample setup showing ASP.NET Core observability with Prometheus, Loki, Grafana, Opentelemetry Collector
- [bradygaster/dotnet-cloud-native-build-2023](https://github.com/bradygaster/dotnet-cloud-native-build-2023)
- [bravecobra/emojivoto-dotnet](https://github.com/bravecobra/emojivoto-dotnet)
- [davidfowl/OtlpDemo](https://github.com/davidfowl/OtlpDemo) ⭐
- [JamesNK/aspnetcore-grafana](https://github.com/JamesNK/aspnetcore-grafana) - Grafana dashboards for ASP.NET Core metrics
- [joaofbantunes/DotNetMicroservicesObservabilitySample](https://github.com/joaofbantunes/DotNetMicroservicesObservabilitySample) - Sample application looking into observability of .NET microservices, using popular tools and technologies like OpenTelemetry, Prometheus, Grafana and (potentially) others
- [open-telemetry/opentelemetry-demo](https://github.com/open-telemetry/opentelemetry-demo) ⭐ - This repository contains the OpenTelemetry Astronomy Shop, a microservice-based distributed system intended to illustrate the implementation of OpenTelemetry in a near real-world environment.
- [open-telemetry/opentelemetry-collector-contrib/examples/demo](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/demo)